草庐IT

Java Spring MVC 模板引擎

全部标签

派生类上的 C++ 模板转换

我有3个相互派生的类:classBasic{...}classExtended:publicBasic{...}classFull:publicExtended{...}我有一个模板类,其中包含来自此类的5-5个:templateclassgroup{public:...private:Tone,two,three,four,five;};groupbasicGroup;groupextendedGroup;groupfullGroup;我可以轻松地将fullGroup转换为basicGroup或将extendedGroup转换为basicGroup吗?(我只想向上投)

c++ - 可变参数模板 : Pass parameter pack without expansion

旧的Cstdio工具提供了一种使用vprintf工具传递可变参数集的方法。是否有类似的方式来传递C++0x可变模板参数包而不扩展它?如果您有一个采用可变参数模板参数包的派生类构造函数,并且需要简单地将其传递给基类构造函数,而不是将其解包,这可能会很有用。例如:templateBase::Base(constT&v,constArgs&...args){/*...expandargshere....*/}templateDerived::Derived(constT&v,constArgs&...args):Base(v,args){/*...don'texpandargs...*/}我

C++,非模板类中的模板变量

我正在使用以下模板类:templateclassPoint2D{private:Tx;Ty;...};templateclassPoint2D;templateclassLine{private:Point2D*start;Point2D*start;....};如果我要创建一个对象线,需要写点的类型和线的类型intmain{Point2DCp1(0,0);Point2DCp2(10,10);Linel(&p1,&p2);...}我觉得这毫无意义......如果点是双倍的,那么线也必须是双倍的......是否可以只模板化类Line中的指针而不模板化所有类,类似的东西templatecl

c++ - memcpy 和 C++ 类模板——如何使用它?

所以..我们怎样才能调用类似memcpy(数据复制,数据,长度);复制抽象数据T?或者如果抽象T不安全,假设我们知道T是一个POD(普通旧数据,基本上是一个C结构)——是否可以复制它? 最佳答案 你的意思是为一些任意的C++类型T工作吗?除非您知道T是POD(普通旧数据,基本上是C结构)类型,否则使用memcpyT类型的对象是不安全的。这将阻止T的复制构造函数运行,例如,这可能导致不正确的复制(尝试memcpy一个std::vector不会复制数据缓冲区,例如)。 关于c++-memcp

c++ - 基于模板的容器的迭代器

templatevoidtmp(){set::iteratorit;//worksset::iteratorit;//doesn'twork} 最佳答案 由于C++语法中一些相当烦人的限制,您必须明确地告诉C++set::iterator是类型名称,而不是静态成员标识符,使用typename关键词。例如,这段代码编译得很好:#includetemplatevoidtmp(){std::set::iteratorx;//OKtypenamestd::set::iteratorit;//AlsoOK}intmain(){tmp();re

c++ - 导出模板功能

使用boost.python将模板函数从C++导出到Python的正确方法是什么?这是代码:templateTgetValue(conststd::string&key,constT&defaultValue=T()){}//Exportintosomepythonclass:class_(...).def("GetValue",getValue).def("GetValue",getValue).def("GetValue",getValue);和用法:printGetValue("width")Boost.Python.ArgumentError:Pythonargumenttyp

c++ - typedef 到模板类型

下面的问题是什么?typedefboost::shared_ptrSharedPtr;GCC给出以下错误:ISOC++forbidsdeclarationof‘shared_ptr’withnotype 最佳答案 C++(还)没有“模板类型定义”,您可以在其中“重命名”这样的模板。这是C++0x中添加的一个特性,其中这样的“typedef”被称为“别名模板”。目前最简单的解决方法是使用带有嵌套typedef的类模板:templatestructSharedPtr{typedefstd::shared_ptrType;};//usag

c++ - 模板对象数组

我不知道如何解决模板和继承的问题。在我的代码中有一个模板类,它看起来或多或少像:templateclassDerived:publicBase{Tvalue;public:Derived(Targ){value=arg;};TgetValue(){returnvalue;};};classBase{};我的基类的唯一目的是对派生类的一组对象进行分组。参数T通常是double、float或complex,尽管int和structs也可能有用。(稍后应该还有几个类似的派生类,带有一些附加功能。)我可以创建这样一个群Base**M=newBase*[numElements];并将派生类的元素

c++ - 模板基类初始化

在visualc++中接受以下代码时,g++将生成错误:“类Derived没有任何字段名称Base”哪个符合标准?templateclassBase{public:Base(){};};templateclassDerived:publicBase{public:Derived():Base(){}};顺便说一句:两者都接受Derived():Base(){}所以同时,我会关注gcc 最佳答案 MSVC++不正确。Base是模板,不是类型。请注意,在通常情况下,Base在Derived的范围内查找,这意味着它将首先找到继承自Base

c++ - C++模板构造函数的问题

代码:#includeusingnamespacestd;templateclasspoint{Tcoordinate[N];public:point(constpoint&);constdouble&operator[](inti)const{returncoordinate[i];}};templatepoint::point(constpoint&p){for(inti=0;iP2;pointP3;cout输出:prog.cpp:Infunction‘intmain()’:prog.cpp:17:error:nomatchingfunctionforcallto‘point::p